package com.ybkj.daijia.server.service;

import com.ybkj.daijia.page.Page;
import com.ybkj.daijia.server.model.Admin;
import java.util.List;

/**
 * @author Shine
 */
public interface AdminService {

    /**
     * @param name
     * @return name为null则查询出所有的信息，否则只查询出与name匹配的信息
     */
    public Page<Admin> selectByPage(Long companyId, String name);

    /**
     * 保存管理员信息
     *
     * @param admin
     * @param roleIds
     * @return
     */
    public Admin insertAdmin(Admin admin, Long[] roleIds);

    /**
     * @param id
     * @return
     */
    public Admin findOne(Long id);

    /**
     * 根据用户名查询出管理员信息
     *
     * @param username
     * @return
     */
    public Admin findByUsername(String username);

    /**
     * 根据一组ID查询出管理员信息
     *
     * @param ids
     * @return
     */
    public List<Admin> findByIdIn(Long[] ids);

    /**
     * 删除管理信息
     *
     * @param admin
     */
    public void delete(Admin admin);

    /**
     * 更新管理员信息
     *
     * @param admin
     * @return
     */
    long updateByPrimaryKey(Admin admin);

    /**
     * 更新管理员信息
     *
     * @param admin
     * @param roleIds
     */
    public void updateByPrimaryKey(Admin admin, Long[] roleIds);

    /**
     * 根据Id查询出管理员信息，包含角色信息
     *
     * @param id
     * @return
     */
    public Admin findOneWithRoles(Long id);

    /**
     * 更新验证码
     *
     * @param admin
     * @return
     */
    public void updateVcode(Admin admin);

    /**
     * 登录失败次数+1
     *
     * @param admin
     * @return
     */
    public void addLoginFailed(Long id);

    /**
     * 锁定帐号
     *
     * @param admin
     * @return
     */
    public void lockUser(Long id);

    /**
     * 解锁帐号
     *
     * @param admin
     * @return
     */
    public void unLockUser(Long id);

    public Integer selectMessageTime(String userName);

    public void setMessageTime(String userName, Integer messageTime);

    void shujuliucun();
}
